package com.ce.sys.login.model;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.ce.framework.constants.WebConstants;
import com.ce.framework.context.FrameworkContext;
import com.ce.framework.exception.AppException;
import com.ce.framework.util.BeanAccessUtil;
import com.ce.framework.util.StringUtil;
import com.ce.sys.auth.SysAuthentication;
import com.ce.sys.org.dao.po.SysVOrg;
import com.ce.sys.person.dao.po.SysPerson;
import com.ce.util.DbUtil;
import com.ce.util.OrgUtil;

public class User implements Serializable{ 
	
	private static final long serialVersionUID = 1L;

	public static final String USER_SESSION_ID = WebConstants.LOGIN_USER;

	/* variable 主键 [VC_ID] */
	private java.lang.String vcId;

	/* variable 人员工作证号 [VC_NUMBER] */
	private java.lang.String vcNumber;

	/* variable 所属机构主键 [VC_ORG$ID] */
	private java.lang.String vcOrgId;

	/* variable 真实姓名 [VC_NAME] */
	private java.lang.String vcName;

	/* variable 用户状态： 0-非系统用户 1-系统用户  9-超级管理员 [VC_STATUS] */
	private java.lang.Integer vcStatus;

	/* variable 身份证号码 [VC_PID] */
	private java.lang.String vcPid;

	/* variable 登陆密码 [VC_PWD] */
	private java.lang.String vcPwd;

	/* variable 性别 缺省为1-男 2-女 [VC_SEX] */
	private java.lang.Integer vcSex;

	/* variable 出生年月 [DT_BORN] */
	private java.util.Date dtBorn;

	/* variable 职称或技术等级，来自字典表 [VC_TITLE] */
	private java.lang.String vcTitle;

	/* variable 职务或职名，来自字典表 [VC_POSITION] */
	private java.lang.String vcPosition;

	/* variable 办公电话 [VC_TEL] */
	private java.lang.String vcTel;

	/* variable 手机 [VC_MOBILE] */
	private java.lang.String vcMobile;

	/* variable 家庭电话 [VC_PHONE] */
	private java.lang.String vcPhone;

	/* variable 备注 [VC_NOTE] */
	private java.lang.String vcNote;

	/* variable 工作流中用到用户角色id [N_ID] */
	private java.lang.Integer nid;

	/* variable EMAIL [VC_MAIL$NAME] */
	private java.lang.String vcMailName;

	/* variable 工种：和字典表关联 [VC_WORKTYPE] */
	private java.lang.String vcWorktype;

	/* variable 籍贯 [VC_HOME] */
	private java.lang.String vcHome;

	/* variable 家庭住址 [VC_ADDRESS] */
	private java.lang.String vcAddress;

	/* variable 政治面貌，来自字典表 [VC_POLITICS] */
	private java.lang.String vcPolitics;

	/* variable 入路时间（参加工作时间） [VC_JOIN] */
	private java.util.Date vcJoin;

	/* variable 文化程度，来自字典表 [VC_GRADE] */
	private java.lang.String vcGrade;

	/* variable 最后编辑人 [VC_CRTR] */
	private java.lang.String vcCrtr;

	/* variable 记录日期，输入录入日期或者最后一次编辑或删除的日期 [VC_CRTRDATE] */
	private java.util.Date vcCrtrdate;

	/* variable 人员等级（用于区分普通职工，一般干部，主管领导等），来自字典表 [VC_CHIEF$TYPE] */
	private java.lang.String vcChiefType;

	/* variable 用户最近一次使用的子系统编号 [VC_LAST_NUMBER] */
	private java.lang.String vcLastNumber;

	/* variable 照片id [VC_PHOTO$ID] */
	private java.lang.String vcPhotoId;

	/* variable 系统排序号 [N_SEQ] */
	private java.lang.Integer nseq;

	/* variable 删除标志位 [VC_DEL$FLAG] */
	private java.lang.Integer vcDelFlag;

	/* variable 登陆别名，初始时和用户名默认一致 [VC_LOG$NAME] */
	private java.lang.String vcLogName;
	
	private String orgName;
	
	private boolean isSuperUser;
	
	private Boolean isAdmin;
	
    private String orgManProName;
    
    private SysVOrg sysOrg;
    

	public SysVOrg getSysOrg() {
		if(this.sysOrg!=null){
			return this.sysOrg;
		}else if(StringUtil.isNotBlank(this.vcOrgId)){
			this.sysOrg = (SysVOrg)DbUtil.getPOByPk("com.ce.sys.org.dao.po.SysVOrg", this.vcOrgId);
			return this.sysOrg;
		}else{
			return null;
		}
	}


	public void setOrgManProId(String orgManProId) {
	}


	public String getOrgManProName() {
		if (orgManProName != null) {
			return orgManProName;
		}
		orgManProName = OrgUtil.getOrgName(getOrgManProId());
		return orgManProName;
	}


	public void setOrgManProName(String orgManProName) {
		this.orgManProName = orgManProName;
	}


	public void setOrgManProFlag(String orgManProFlag) {
	}


	/**
	 * 开发人： andy
	 * 开发时间： 2013-10-9 下午02:42:47
	 * 功能描述：设置超管用户信息,设置完后，session中的登陆用户信息将变为超管用户的信息
	 * 方法的参数和返回值
	 * @param rootOrgId
	 * @throws AppException
	 * void 
	 * ==================================
	 * 修改历史
	 * 修改人        修改时间      修改原因及内容
	 *
	 * ==================================
	 */
	public static User setSuperUserInfo(String rootOrgId) throws AppException{
	        return setSuperUserInfo(ServletActionContext.getRequest(),rootOrgId);
	 }

	public static User setSuperUserInfo(HttpServletRequest request,String rootOrgId) throws AppException{
		    SysVOrg org = (SysVOrg)OrgUtil.getOrg(rootOrgId);
		    User user = new User();
	        user.setDtBorn(new Date());
	        user.setVcId("super");
	        user.setVcMobile("13888888888");
	        user.setVcName("超级管理员");
	        user.setVcNote("超级管理员");
	        user.setVcPhone("01088888888");
	        user.setVcPosition("0");
	        user.setVcPid("488888888888888888");
	        user.setVcTel("01088888888");
	        user.setVcTitle("0");
	        user.setSuperUser(true);
	        user.setOrgName(org.getVcName());
	        user.setVcOrgId(org.getVcId());
	        request.getSession().setAttribute(USER_SESSION_ID, user);
	        return user;
	 }
	

    /**
	    * 开发人：andy
	    * 开发日期：2007-5-11  9:40:45
	    * 功能描述：用于检查是否为超级用户，该用户不存在于数据库，在配置文件中设置
	    * 方法的参数和返回值：
	    * @param userName
	    * @param userPid
	    * @param userPwd
	    * @return
	    */
    public static boolean checkSuperUser(String userName,String userPid,String userPwd){

        try{
            String basePath = FrameworkContext.getAppPath();
            File f = new File(basePath + "/../../conf/super.dat");
            if(!f.exists()){
            	f = new File(basePath + "/WEB-INF/csmis.dat");
            }
            FileReader fi = new FileReader(f);
            BufferedReader br = new BufferedReader(fi);
            String superName = br.readLine();
            String superPwd = br.readLine();
            if((superName.equals(userName) || superName.equals(userPid)) && superPwd.equals(userPwd)){
            	return true;
            }
            return false;
        } 
        catch (Exception e){
            e.printStackTrace();
            return false;
        }
    }
	        
	
	/**
	* 开发人：andy
	* 开发日期: 2013-5-20  下午02:07:18
	* 功能描述: 得到Session中的User对象，必须在request对象的生存周期内才能得到
	* 方法的参数和返回值: 
	* @return
	*/
	public static User getUser(){
		HttpServletRequest request = ServletActionContext.getRequest();
		return getUser(request);
	}

	/**
	* 开发人：andy
	* 开发日期: 2013-5-20  下午02:07:18
	* 功能描述: 得到当前登录用户ID
	* 方法的参数和返回值: 
	* @return
	*/
	public static String getUserId(){
		User user = getUser();
		if(user!=null){
			return user.getVcId();
		}
		return null;
	}

	/**
	* 开发人：andy
	* 开发日期: 2013-5-20  下午02:07:18
	* 功能描述: 得到当前登录用户姓名
	* 方法的参数和返回值: 
	* @return
	*/
	public static String getUserName(){
		User user = getUser();
		if(user!=null){
			return user.getVcName();
		}
		return null;
	}
	
	/**
	* 开发人：andy
	* 开发日期: 2013-5-20  下午02:07:18
	* 功能描述: 得到当前登录用户所属组织机构ID
	* 方法的参数和返回值: 
	* @return
	*/
	public static String getUserOrgId(){
		User user = getUser();
		if(user!=null){
			return user.getVcOrgId();
		}
		return null;
	}

	/**
	* 开发人：andy
	* 开发日期: 2013-5-20  下午02:07:18
	* 功能描述: 得到当前登录用户所属组织机构的名称
	* 方法的参数和返回值: 
	* @return
	*/
	public static String getUserOrgName(){
		User user = getUser();
		if(user!=null){
			return OrgUtil.getOrgName(user.getVcOrgId());
		}
		return null;
	}
	/**
	* 开发人：andy
	* 开发日期: 2013-5-20  下午02:07:05
	* 功能描述: 根据级别获取上级机构名称
	* 方法的参数和返回值: 
	* @param vcOrgLevel 1 市局 2 分局3 征管局
	* @return
	*/
	public static String getParOrgNameByOrgLevel(String vcOrgLevel){
		String vcOrgId=User.getUserOrgId();
		String sql="select t.vc_name from SYS_T_ORG t where t.vc_org$level='"+vcOrgLevel+"' start with t.vc_id='"+vcOrgId+"' connect by prior t.vc_par$orgid = t.vc_id";
		String parOrgName=DbUtil.getFirstStringSqlQuery(sql);
		return parOrgName;
	}
	/**
	* 开发人：andy
	* 开发日期: 2013-5-20  下午02:07:05
	* 功能描述: 根据级别获取上级机构机构id
	* 方法的参数和返回值: 
	* @param vcOrgLevel 1 市局 2 分局3 征管局
	* @return
	*/
	public static String getParOrgIdByOrgLevel(String vcOrgLevel){
		String vcOrgId=User.getUserOrgId();
		
		String sql="select t.vc_id from SYS_T_ORG t where t.vc_org$level='"+vcOrgLevel+"' start with t.vc_id='"+vcOrgId+"' connect by prior t.vc_par$orgid = t.vc_id";
		String parOrgId=DbUtil.getFirstStringSqlQuery(sql);
		return parOrgId;
	}
	
	/**
	* 开发人：andy
	* 开发日期: 2013-5-20  下午02:07:05
	* 功能描述: 得到Session中的User对象
	* 方法的参数和返回值: 
	* @param request
	* @return
	*/
	public static User getUser(HttpServletRequest request){
		if(request==null)
			return null;
		Object obj = request.getSession().getAttribute(USER_SESSION_ID);
		if(obj instanceof User){
			return (User)obj;
		}
		return null;
	}
	
	private String orgType;//局  返回1  部门返回2
	public String getOrgType(){
		if(StringUtil.isNotBlank(orgType)){
			return orgType;
		}
		if (getSysOrg() != null) {
			orgType = sysOrg.getVcType();
		}
		return orgType;
	}
	
	private String orgLevel;//层级
	/**
	 * 
	 * @return 1 市局   2 市局科室、跨区局；3跨区局部门 、征管局
	 */
	public String getOrgLevel(){
		if(StringUtil.isNotBlank(orgLevel)){
			return orgLevel;
		}
		if (getSysOrg() != null) {
			orgLevel = sysOrg.getVcOrgLevel();
		}
		return orgLevel;
	}
	/**
	 * 获取当前登录人所属单位，市局返回市局id,跨区返回跨区局的id
	 * @return
	 */
	public  String getRootOrgId(){
		String curOrgId=User.getUserOrgId();
		String sql="select vc_id from (SELECT vc_id,vc_org$level,vc_type,vc_name " +
				"FROM SYS_V_ORG$DEP t "+
				"START WITH t.VC_ID ='"+curOrgId+"' CONNECT BY PRIOR VC_PAR$ORGID=vc_id "+ 
				"ORDER BY vc_org$level desc,vc_type "+
				") tt where tt.vc_type='1'";
		String orgId=DbUtil.getFirstStringSqlQuery(sql);
		return orgId;
	}
	
	/**
	 * 获取当前登录人所属单位，市局返回1,跨区返回2
	 * @return
	 */
	public  String getRootOrgLevel(){
		String curOrgId=User.getUserOrgId();
		String sql="select vc_org$level from (SELECT vc_id,vc_org$level,vc_type,vc_name " +
				"FROM SYS_V_ORG$DEP t "+
				"START WITH t.VC_ID ='"+curOrgId+"' CONNECT BY PRIOR VC_PAR$ORGID=vc_id "+ 
				"ORDER BY vc_org$level desc,vc_type "+
				") tt where tt.vc_type='1'";
		String orgLevel=DbUtil.getFirstStringSqlQuery(sql);
		return orgLevel;
	}
	
	private String orgManProFlag;
	    /**
	     * 开发人：hh-ssj
	     * 开发日期：2007-3-29  14:50:06
	     * 功能描述：获取用户所在单位的标志。
	 				如bxh为铁道部信号科人员，则此函数返回铁道部的FLAG(1)，
	 				如jxh为上海局信号科人员，则此函数返回上海局的FLAG(3)，
	 				如dxh为上海段信号科人员，则此函数返回上海段的FLAG(5)，
	 				如jxcj为上海段检修车间人员，则此函数返回检修车间的FLAG(6)，
	 				如jxgq为上每段检修车间检修工区人员，则此函数返回检修工区的FLAG(7)
	     * 方法的参数和返回值：
	     * @return
	     */
	public String getOrgManProFlag() {
		if (orgManProFlag != null) {
			return orgManProFlag;
		}
		if (getSysOrg() != null
				&& StringUtil.isNotBlank(this.sysOrg.getVcType())) {
			orgManProFlag = sysOrg.getVcType();
		} else if (sysOrg != null
				&& StringUtil.isBlank(sysOrg.getVcType())) {
			SysVOrg org = OrgUtil.getOrg(sysOrg.getVcParOrgid());
			while(org!=null&&StringUtil.isBlank(org.getVcType())){//如果是二级部门，则一直向上找到根机构
				org = OrgUtil.getOrg(org.getVcParOrgid());
			}
			if(org!=null){
				orgManProFlag = org.getVcType();
			}
			else{
				orgManProFlag = OrgUtil.getRootOrgFlag();
			}
		} else {
			this.getSysOrg();
			orgManProFlag = this.getOrgManProFlag();
		}
		return orgManProFlag;
	}

	private String orgManProId;
     /**
     * 开发人：hh-ssj
     * 开发日期：2007-3-29  14:50:46
     * 功能描述：获取用户所在单位的UUID。
 				
     * 方法的参数和返回值：
     * @return
     */
	public String getOrgManProId() {
		if (orgManProId != null) {
			return orgManProId;
		}
		if (getSysOrg() != null
				&& StringUtil.isNotBlank(sysOrg.getVcType())) {
			orgManProId = sysOrg.getVcId();
		} else if (this.sysOrg != null
				&& StringUtil.isBlank(sysOrg.getVcType())) {
			SysVOrg org = OrgUtil.getOrg(sysOrg.getVcParOrgid());
			while(org!=null&&StringUtil.isBlank(org.getVcType())){//如果是二级部门，则一直向上找到根机构
				org = OrgUtil.getOrg(org.getVcParOrgid());
			}
			if(org!=null){
				orgManProId = org.getVcId();
			}
			else{
				orgManProId = OrgUtil.getRootOrgId();
			}
		} else {
			this.getSysOrg();
			orgManProId = OrgUtil.getRootOrgId();
		}
		return orgManProId;
	}
	     
	
    public static User getCurUser(HttpSession session){
    	User user = null;
        try{
        	user = (User) session.getAttribute(USER_SESSION_ID);
        }catch(Exception e){
        }
        return user;
    }
	
	public User(){}
	
	public User(SysPerson person){
		 try{
			 BeanAccessUtil.copyBeanProperties(this,person);	
			 this.setOrgName(OrgUtil.getOrgName(person.getVcOrgId()));
		 }catch(Exception e){
			 e.printStackTrace();
		 }
	}

	public java.lang.String getVcId() {
		return vcId;
	}

	public void setVcId(java.lang.String vcId) {
		this.vcId = vcId;
	}

	public java.lang.String getVcNumber() {
		return vcNumber;
	}

	public void setVcNumber(java.lang.String vcNumber) {
		this.vcNumber = vcNumber;
	}

	public java.lang.String getVcOrgId() {
		return vcOrgId;
	}

	public void setVcOrgId(java.lang.String vcOrgId) {
		this.vcOrgId = vcOrgId;
	}

	public java.lang.String getVcName() {
		return vcName;
	}

	public void setVcName(java.lang.String vcName) {
		this.vcName = vcName;
	}

	public java.lang.Integer getVcStatus() {
		return vcStatus;
	}

	public void setVcStatus(java.lang.Integer vcStatus) {
		this.vcStatus = vcStatus;
	}

	public java.lang.String getVcPid() {
		return vcPid;
	}

	public void setVcPid(java.lang.String vcPid) {
		this.vcPid = vcPid;
	}

	public java.lang.String getVcPwd() {
		return vcPwd;
	}

	public void setVcPwd(java.lang.String vcPwd) {
		this.vcPwd = vcPwd;
	}

	public java.lang.Integer getVcSex() {
		return vcSex;
	}

	public void setVcSex(java.lang.Integer vcSex) {
		this.vcSex = vcSex;
	}

	public java.util.Date getDtBorn() {
		return dtBorn;
	}

	public void setDtBorn(java.util.Date dtBorn) {
		this.dtBorn = dtBorn;
	}

	public java.lang.String getVcTitle() {
		return vcTitle;
	}

	public void setVcTitle(java.lang.String vcTitle) {
		this.vcTitle = vcTitle;
	}

	public java.lang.String getVcPosition() {
		return vcPosition;
	}

	public void setVcPosition(java.lang.String vcPosition) {
		this.vcPosition = vcPosition;
	}

	public java.lang.String getVcTel() {
		return vcTel;
	}

	public void setVcTel(java.lang.String vcTel) {
		this.vcTel = vcTel;
	}

	public java.lang.String getVcMobile() {
		return vcMobile;
	}

	public void setVcMobile(java.lang.String vcMobile) {
		this.vcMobile = vcMobile;
	}

	public java.lang.String getVcPhone() {
		return vcPhone;
	}

	public void setVcPhone(java.lang.String vcPhone) {
		this.vcPhone = vcPhone;
	}

	public java.lang.String getVcNote() {
		return vcNote;
	}

	public void setVcNote(java.lang.String vcNote) {
		this.vcNote = vcNote;
	}

	public java.lang.Integer getNid() {
		return nid;
	}

	public void setNid(java.lang.Integer nid) {
		this.nid = nid;
	}

	public java.lang.String getVcMailName() {
		return vcMailName;
	}

	public void setVcMailName(java.lang.String vcMailName) {
		this.vcMailName = vcMailName;
	}

	public java.lang.String getVcWorktype() {
		return vcWorktype;
	}

	public void setVcWorktype(java.lang.String vcWorktype) {
		this.vcWorktype = vcWorktype;
	}

	public java.lang.String getVcHome() {
		return vcHome;
	}

	public void setVcHome(java.lang.String vcHome) {
		this.vcHome = vcHome;
	}

	public java.lang.String getVcAddress() {
		return vcAddress;
	}

	public void setVcAddress(java.lang.String vcAddress) {
		this.vcAddress = vcAddress;
	}

	public java.lang.String getVcPolitics() {
		return vcPolitics;
	}

	public void setVcPolitics(java.lang.String vcPolitics) {
		this.vcPolitics = vcPolitics;
	}

	public java.util.Date getVcJoin() {
		return vcJoin;
	}

	public void setVcJoin(java.util.Date vcJoin) {
		this.vcJoin = vcJoin;
	}

	public java.lang.String getVcGrade() {
		return vcGrade;
	}

	public void setVcGrade(java.lang.String vcGrade) {
		this.vcGrade = vcGrade;
	}

	public java.lang.String getVcCrtr() {
		return vcCrtr;
	}

	public void setVcCrtr(java.lang.String vcCrtr) {
		this.vcCrtr = vcCrtr;
	}

	public java.util.Date getVcCrtrdate() {
		return vcCrtrdate;
	}

	public void setVcCrtrdate(java.util.Date vcCrtrdate) {
		this.vcCrtrdate = vcCrtrdate;
	}

	public java.lang.String getVcChiefType() {
		return vcChiefType;
	}

	public void setVcChiefType(java.lang.String vcChiefType) {
		this.vcChiefType = vcChiefType;
	}

	public java.lang.String getVcLastNumber() {
		return vcLastNumber;
	}

	public void setVcLastNumber(java.lang.String vcLastNumber) {
		this.vcLastNumber = vcLastNumber;
	}

	public java.lang.String getVcPhotoId() {
		return vcPhotoId;
	}

	public void setVcPhotoId(java.lang.String vcPhotoId) {
		this.vcPhotoId = vcPhotoId;
	}

	public java.lang.Integer getNseq() {
		return nseq;
	}

	public void setNseq(java.lang.Integer nseq) {
		this.nseq = nseq;
	}

	public java.lang.Integer getVcDelFlag() {
		return vcDelFlag;
	}

	public void setVcDelFlag(java.lang.Integer vcDelFlag) {
		this.vcDelFlag = vcDelFlag;
	}

	public java.lang.String getVcLogName() {
		return vcLogName;
	}

	public void setVcLogName(java.lang.String vcLogName) {
		this.vcLogName = vcLogName;
	}

	public String getOrgName() {
		return orgName;
	}

	public void setOrgName(String orgName) {
		this.orgName = orgName;
	}

	/**
	 * 开发人： andy
	 * 开发时间： 2012-4-16 下午3:28:35
	 * 功能描述：判断是否超级管理员
	 * 方法的参数和返回值
	 * @return
	 * boolean 
	 * ==================================
	 * 修改历史
	 * 修改人        修改时间      修改原因及内容
	 *
	 * ==================================
	 */
	public boolean isSuperUser() {
		return isSuperUser;
	}
	
	/**
	 * 开发人： andy
	 * 开发时间： 2012-4-16 下午3:28:23
	 * 功能描述：判断是否系统管理员
	 * 方法的参数和返回值
	 * @return
	 * boolean 
	 * ==================================
	 * 修改历史
	 * 修改人        修改时间      修改原因及内容
	 *
	 * ==================================
	 */
	public boolean isAdmin(){
		if(isAdmin==null){
			if(isSuperUser()){
				return true;
			}
			isAdmin = DbUtil.getFirstIntSqlQuery("select count(*) from sys_t_account$role t where t.vc_user$id=? and t.vc_role$id='admin'",new Object[]{vcId})>0;
		}
		return isAdmin;
	}

	SysAuthentication auth = new SysAuthentication();
	/**
	 * 开发人： andy
	 * 开发时间： 2012-4-16 下午3:25:38
	 * 功能描述：判断是否有指定URL的权限
	 * 方法的参数和返回值
	 * @param url
	 * @return
	 * boolean 
	 * ==================================
	 * 修改历史
	 * 修改人        修改时间      修改原因及内容
	 *
	 * ==================================
	 */
	public boolean isPermis(String url){//不传request参数，以避免将解析出的menuId存入request，导致权限错乱。
		return auth.checkAuth(url,null);
	}
	public void setSuperUser(boolean isSuperUser) {
		this.isSuperUser = isSuperUser;
	}


	@Override
	public boolean equals(Object obj) {
		if(this.vcId==null||obj==null||!(obj instanceof User)){
			return false;
		}
		return vcId.equals(((User)obj).getVcId());
	}
	private HashMap<String,String> regMap = new HashMap<String,String>();
	/**
	* 开发人：andy
	* 开发日期: 2012-8-2  下午12:03:11
	* 功能描述: 获取用户注册表中的值
	* 方法的参数和返回值: 
	* @param vcName
	* @return
	*/
	public String getRegeditValue(String vcName){
		String val = null;
		if((val=regMap.get(vcName))!=null){
			return val;
		}
		val = DbUtil.getFirstStringSqlQuery("select vc_value from sys_t_regedit_user where vc_user=? and vc_name=?",
				new Object[]{this.getVcId(),vcName});
		if(val==null){
			val = "";
		}
		regMap.put(vcName, val);
		return val;
	}
	public int getRegeditIntValue(String vcName){
		String val = getRegeditValue(vcName);
		int res = -1;
		try {
			res = Integer.parseInt(val);
		} catch (NumberFormatException e) {
		}
		return res;
	}

	public double getRegeditDoubleValue(String vcName){
		String val = getRegeditValue(vcName);
		double res = -1;
		try {
			res = Double.parseDouble(val);
		} catch (NumberFormatException e) {
		}
		return res;
	}
	
	public void clearRegData(){
		regMap.clear();
	}
   

}
